#ifndef DIRECTORY_H
#define DIRECTORY_H

#include <string>
using std::wstring;

#include <vector>
using std::vector;

enum class EDirectoryChildren
  {
  DC_ALL,
  DC_FILES,
  DC_DIRECTORIES
  };

class Directory
  {
  public:
    Directory(const wstring& i_name);
    Directory(const Directory&& i_ref);
    ~Directory();

    unsigned __int64 GetSize();
    vector<wstring> GetChildren(EDirectoryChildren i_type = EDirectoryChildren::DC_ALL) const;
    wstring GetName() const;
    bool IsValid() const;
  private:
    static wstring mg_appendix;
    bool m_is_valid;
    wstring m_dir_name;
    unsigned __int64 m_dir_size;
  };

#endif